package br.com.tcm.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.tcm.entity.Pedido;

public class PedidoDAO {

	private Connection con = null;
	
	public PedidoDAO() {
		this.con = new ConnectionFactory().getConnection();
	}
	
	public void insertPedido(Pedido pedido) {
        try {
            String sql = "insert into pedido (dePedido,dePagamento,idUsuario,dtCadastro,periodoCadastro) values (?,?,?,?,?)";
            PreparedStatement pst = con.prepareStatement(sql);
            pst.setString(1, pedido.getDePedido());
            pst.setString(2, pedido.getDePagamento());
            pst.setInt(3, pedido.getIdUsuario());
            pst.setDate(4, (Date) pedido.getDtCadastro());
            pst.setString(5, pedido.getPeriodoCadastro());
            pst.execute();
            pst.close();
            System.out.println("Empresa Gravado.");
        } catch (SQLException e) {
            throw new RuntimeException("Erro ao inserir empresa.");
        }
    }
    
    public void updatePedido(Pedido pedido) {
    	try {
			String sql = "update pedido set dePedido = ?, dePagamento = ?, idUsuario = ?, dtCadastro = ?, periodoCadastro = ? where idPedido = ?";
			PreparedStatement pst = con.prepareStatement(sql);
            pst.setString(1, pedido.getDePedido());
            pst.setString(2, pedido.getDePagamento());
            pst.setInt(3, pedido.getIdUsuario());
            pst.setDate(4, (Date) pedido.getDtCadastro());
            pst.setString(5, pedido.getPeriodoCadastro());
            pst.setInt(6, pedido.getIdPedido());
			pst.execute();
			pst.close();
			System.out.println("Pedido Atualizado.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao fazer update do pedido.");
		}
    }
    
    public void deletePedido(Pedido pedido) {
    	try {
			String sql = "delete from pedido where idPedido = ?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setInt(1, pedido.getIdPedido());
			pst.execute();
			pst.close();
			System.out.println("Pedido Apagado.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao apagar o pedido.");
		}
    }
    
    public List<Pedido> findAll() {
    	List<Pedido> pedidoList = new ArrayList<Pedido>();
    	try {
			String sql = "select * from pedido";
			PreparedStatement pst = con.prepareStatement(sql);
			ResultSet rs = pst.executeQuery();
			while (rs.next()) {
				Pedido pedido = new Pedido();
				pedido.setIdPedido(rs.getInt("idPedido"));
				pedido.setDePedido(rs.getString("dePedido"));
				pedido.setDePagamento(rs.getString("dePagamento"));
				pedido.setIdUsuario(rs.getInt("idUsuario"));
				pedido.setDtCadastro(rs.getDate("dtCadastro"));
				pedido.setPeriodoCadastro(rs.getString("periodoCadastro"));
				pedidoList.add(pedido);
			}
			pst.close();
			System.out.println("Pedido listado com sucesso.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao listar o pedido.");
		}
    	
    	return pedidoList;
    }
	
}
